¿Por qué? y ¿cómo?
March 1, 2025
Artículo why we created Julia
Es código abierto:
todo está alojado en GitHub
Es reproducible:
permite controlar todas las versiones de todos los paquetes
Es dinámica:
utiliza tipos dinámicos, y la sintaxis es muy sencilla.
Es componible:
multiple distach
Eje vertical (tiempo del lenguaje) / (tiempo de ejecución en C)
La sintaxis para vectores y matrices veremos que es muy sencilla.
| Función | Julia | MATLAB |
|---|---|---|
| Leer vector | x[i] |
x(i) |
| Leer fila de matriz | A[i,:] |
A(i,:) |
| Resolver sistema lineal | A\b |
A\b |
| Funciones | f(x)=x^2 |
f = @(x) x^2 |
Primera ejecución
Al lanzar julia por primera vez veremos algo así:
Variables
Lógica
x es [1, 2]. ¡Qué decir!
Los scripts de Julia son archivos .jl
Para desarrollar código podemos usar Visual Studio Code con Julia.
También podemos utilizar libretas Jupyter
Es una interfaz web basada en libretas para facilitar el uso de Julia, creada originalmente para Python.
Las funcionalidades avanzadas se cargan con paquetes (Plots, …)
Los paquetes están alojados en GitHub, donde suelen contar con amplia documentación: ejemplo Plots.jl
Para resolver una EDO podemos usar sintaxis similar a ode45
g = 9.79 # Gravitational constant
L = 1.00 # Length of pendulum
u₀ = [0, π / 60] # Initial speed and angle
tspan = (0.0, 6.3) # Time span
# Define the problem
function pendulum(du, u, p, t)
θ = u[1]
dθ = u[2]
du[1] = dθ
du[2] = -(g / L) * θ
end
# Pass to solver
using DifferentialEquations
prob = ODEProblem(pendulum, u₀, tspan)
sol = solve(prob, Tsit5(), reltol=1e-6)
# Plot
using Plots
plot(sol.t, first.(sol.u), label="\\theta")*Tomado de The Unreasonable Effectiveness of Multiple Dispatch
Sin modificar la librería DifferentialEquations podemos extenderla a otros “tipos de datos”
using Measurements
g = 9.79 ± 0.02 # Gravitational constant
L = 1.00 ± 0.01 # Length of pendulum
u₀ = [0 ± 0.0, π / 60 ± 0.01] # Initial speed and angle
tspan = (0.0, 6.3) # Time span
# Define the problem
function pendulum(du, u, p, t)
θ = u[1]
dθ = u[2]
du[1] = dθ
du[2] = -(g / L) * θ
end
# Pass to solver
using DifferentialEquations
prob = ODEProblem(pendulum, u₀, tspan)
sol = solve(prob, Tsit5(), reltol=1e-6)
# Plot
using Plots
plot(sol.t, first.(sol.u), label="\\theta")*Tomado de The Unreasonable Effectiveness of Multiple Dispatch
Curso de introducción a julia. David Gómez-Castro (UAM)